Fixed height-for-width cache
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Tue, 20 Apr 2010 00:41:23 +0000 (20:41 -0400)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Tue, 20 Apr 2010 00:41:23 +0000 (20:41 -0400)
Fixed the cache to be cleared when flagged with WIDTH/HEIGHT_REQUEST_NEEDED.
This error was causing some widgets to not be sized correctly (the stock and
icon browser in the demo for instance).

gtk/gtkextendedlayout.c

index b764f46304b189d99ecdbb62bf47562800904086..b95c5b784ceb3368072d4c5948a8ddeca4991b22 100644 (file)
@@ -129,6 +129,7 @@ get_cache (GtkExtendedLayout *layout, gboolean create)
   return cache;
 }
 
+
 static void
 do_size_request (GtkWidget *widget)
 {
@@ -166,6 +167,8 @@ compute_size_for_orientation (GtkExtendedLayout *layout,
       
       if (GTK_WIDGET_WIDTH_REQUEST_NEEDED (layout) == FALSE)
        found_in_cache = get_cached_desired_size (for_size, cache->desired_widths, &cached_size);
+      else
+       memset (cache->desired_widths, 0x0, N_CACHED_SIZES * sizeof (DesiredSize));
     }
   else
     {
@@ -173,6 +176,8 @@ compute_size_for_orientation (GtkExtendedLayout *layout,
       
       if (GTK_WIDGET_WIDTH_REQUEST_NEEDED (layout) == FALSE)
        found_in_cache = get_cached_desired_size (for_size, cache->desired_heights, &cached_size);
+      else
+       memset (cache->desired_heights, 0x0, N_CACHED_SIZES * sizeof (DesiredSize));
     }
     
   if (!found_in_cache)